package com.yanxu.threadpool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @author 折戟沉沙铁未销
 * @version V1.0
 * @date 2025/3/2-2025
 * @Description: FixedThreadPool  固定数量的线程数
 */
public class FixedThreadPoolTest {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(5);

        for (int i = 0; i < 1000; i++) {
            executorService.submit(new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(500);
                        System.out.println(Thread.currentThread().getName());
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });
        }

        /*
        *   corePoolSize 核心数 【等于】 maxPoolSize 最大数
        *   队列使用 LinkedBlockQueue 无界队列。
        *   keepAliveTime=0 因为核心数等于最大数。是永远不会有线程需要回收的。
        *
        * 注意：因为队列是 LinkedBlockQueue 无界队列，也是可以无限的堆放任务，因此有可能出现 OOM
        * */
    }
}